什麼是CRUD勒,其實就是新增(Create)、讀取(Read)、更新(Update)、刪除(Delete)。通常一個動態網站的形成,至少都有這樣的功能,Rails有內建一個功能就是可以馬上把CRUD做出來,而且還是可以使用的。
有一些原理我會慢慢講,不過有些沒提到的,歡迎可以留言一起討論一下。我不會的話還是會幫大家解決啦。
通常我們要做一個CRUD大概要花一段時間來刻,不過今天介紹的東西可以讓大家幾分鐘的時間就處理完成
1.建立scaffold
$ rails g scaffold post title:string content:text
rails g scaffold post title:string content:text
rails g => rails generate 產生新的程式碼
scaffold => 自動化鷹架
title => 欄位名稱
string => 資料型態
content => 欄位名稱
text => 資料型態
有關rails 定義的 資料型態
rails g scaffold會幫你做的事有:
1.定義欄位資料
2.建立model
3.建立test
4.在router建立resource
5.建立controller 以及自動新增CRUD
6.建立controller的test
7.建立helper
8.建立helper的test
9.建立js
10.建立css
11.建立scaffolds預設的css
2.新增table
rails 控制欄位的地方是在db/migrate,所以剛剛scaffold幫我定義的資料會生一個檔案在dv/migrate裡,打開來看來長這樣
class CreatePosts < ActiveRecord::Migration
def change
create_table :posts do |t|
t.string :title
t.text :content
t.timestamps
end
end
end
t.timestamps 是會自動幫你生created_at跟updated_at,也就是新增及修改資料時會幫你建立資料
詳細請看:http://ihower.tw/rails3/migrations.html#id154
OK那我們直接執行下面這行
$ rake db:migrate
rake就會透過db/migrate裡的檔案來幫你做資料庫的變動,所以檔案名稱都會長這樣
db/migrate/20121010081617_create_posts.rb
為了讓多人開發的時候,解決會有重覆修改資料庫的問題。
3.資料庫呢???
怪了,那資料庫不用設定嗎?
當然要啦,因為rails 預設是使用sqlite所以會在db/建立資料庫
如果要修改資料庫的設定可以到config/database.yml 去就修改
# SQLite version 3.x
# gem install sqlite3
#
# Ensure the SQLite 3 gem is defined in your Gemfile
# gem 'sqlite3'
development:
adapter: sqlite3
database: db/development.sqlite3
pool: 5
timeout: 5000
# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
adapter: sqlite3
database: db/test.sqlite3
pool: 5
timeout: 5000
production:
adapter: sqlite3
database: db/production.sqlite3
pool: 5
timeout: 5000
詳細資料請參考看 http://guides.rubyonrails.org/getting_started.html#configuring-a-database
4.上線啦...
瀏覽器打上http://127.0.0.1:3000/posts
也可以新增
新增成功
=========
雖然scaffold可以讓你馬上又快速的做上一個馬上建立好MVC的而且又有CRUD的功能,但其實有些事情沒辦法scaffold做,還是要用手刻的會比較好一點,尤其是新手的時候最好還是先乖乖的手刻。